package com.ymatou.iapi.productsnapshot.testcase;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.experimental.categories.Category;

import com.ymatou.iapi.productsnapshot.parameter.PutProductSnapshotStatusBean;
import com.ymatou.iapi.productsnapshot.service.PutProductSnapshotStatusCall;
import com.ymt.core.tool.Logger;
import com.ymt.utils.annotation.*;
import com.ymt.utils.tag.*;
import com.ymttest.database.mongo.SnapShotWapper;
/**
*更新引用次数
*FreeMaker Template自动生成代码
*/
@TestSuite
public class Ts_PutProductSnapshotStatus{
	private static PutProductSnapshotStatusBean putproductsnapshotstatusBean;
	private static PutProductSnapshotStatusCall putproductsnapshotstatusCall;
	@BeforeClass
	public static void setUp() {
		Logger.createResultFile("更新引用次数");
	}

	@Before
	public void caseUp() {
		putproductsnapshotstatusBean=new PutProductSnapshotStatusBean();
		putproductsnapshotstatusCall=new PutProductSnapshotStatusCall();
	}

	@AfterClass
	public static void tearDown() {
		Logger.generateResult(putproductsnapshotstatusCall.getOpurl());
	}

	@After
	public void caseDown() {
		Logger.end();
	}
	@Test
	@Category({P1.class})
	@TestCase
	public void Tc_PutProductSnapshotStatus_001() {
		Logger.start(true,"更新引用次数成功");
		try {
			SnapShotWapper ssw=new SnapShotWapper();
			List<String> keys=new ArrayList<>();
			keys.add("pid");
			keys.add("ver");
			keys.add("ckey");
			keys.add("pkey");
			keys.add("pickey");
			ArrayList<Map> list = ssw.getProductVersionInfoLens(1, keys);
			String pid=list.get(0).get("pid").toString();
			String ver=list.get(0).get("ver").toString();
			
			int viref_b=(int)ssw.getProductVersionInfo(pid,Integer.valueOf(ver)).get(0).get("ref");
			int cref_b=(int)ssw.getProductCatalogInfo(pid,list.get(0).get("ckey").toString()).get(0).get("ref");
			int pref_b=(int)ssw.getProductCoreInfo(pid,list.get(0).get("pkey").toString()).get(0).get("ref");
			int picref_b=(int)ssw.getProductPictureInfo(pid,list.get(0).get("pickey").toString()).get(0).get("ref");
			
			String putver=new BigDecimal(list.get(0).get("ver").toString()).divide(new BigDecimal("1000")).setScale(3).toString();
			putproductsnapshotstatusBean.setProductId(pid);
			putproductsnapshotstatusBean.setVersion(putver);
			putproductsnapshotstatusBean.setAppId("AutoTest");
			putproductsnapshotstatusCall.setData(putproductsnapshotstatusBean);
			putproductsnapshotstatusCall.callService();			
			Logger.verifyEquals("ok", putproductsnapshotstatusCall.getReturnData(), "验证返回");
			
			int viref_a=(int)ssw.getProductVersionInfo(pid,Integer.valueOf(ver)).get(0).get("ref");
			int cref_a=(int)ssw.getProductCatalogInfo(pid,list.get(0).get("ckey").toString()).get(0).get("ref");
			int pref_a=(int)ssw.getProductCoreInfo(pid,list.get(0).get("pkey").toString()).get(0).get("ref");
			int picref_a=(int)ssw.getProductPictureInfo(pid,list.get(0).get("pickey").toString()).get(0).get("ref");
			
			Logger.verifyEquals(viref_b+1, viref_a, "验证ProductVersionInfo_ref");
			Logger.verifyEquals(cref_b+1, cref_a, "验证ProductCatalogInfo_ref");
			Logger.verifyEquals(pref_b+1, pref_a, "验证ProductCoreInfo_ref");
			Logger.verifyEquals(picref_b+1, picref_a, "验证ProductPictureInfo_ref");
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	@Test
	@Category({P3.class})
	@TestCase
	public void Tc_PutProductSnapshotStatus_002() {
		Logger.start(true,"不输入pid失败");
		try {
			putproductsnapshotstatusCall=new PutProductSnapshotStatusCall("snapshot");
//			putproductsnapshotstatusBean.setProductId(pid);
			putproductsnapshotstatusBean.setVersion("1.001");
			putproductsnapshotstatusBean.setAppId("AutoTest");
			putproductsnapshotstatusCall.setData(putproductsnapshotstatusBean);
			putproductsnapshotstatusCall.callService();			
			Logger.verifyEquals("fail", putproductsnapshotstatusCall.getReturnData(), "验证返回");		
			
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
	@Test
	@Category({P2.class})
	@TestCase
	public void Tc_PutProductSnapshotStatus_003() {
		Logger.start(true,"不输入version失败");
		try {
			//TODO 补全case代码
//			org.junit.Assert.fail();
			SnapShotWapper ssw=new SnapShotWapper();
			List<String> keys=new ArrayList<>();
			keys.add("pid");
			keys.add("ver");
			keys.add("ckey");
			keys.add("pkey");
			keys.add("pickey");
			ArrayList<Map> list = ssw.getProductVersionInfoLens(1, keys);
			String pid=list.get(0).get("pid").toString();
			putproductsnapshotstatusBean.setProductId(pid);
			putproductsnapshotstatusCall.setData(putproductsnapshotstatusBean);
			putproductsnapshotstatusCall.callService();			
			Logger.verifyEquals("fail", putproductsnapshotstatusCall.getReturnData(), "验证返回");	
		} catch (Exception e) {
			Logger.fail(e);
		}
	}
}